package cn.dao;

import cn.model.TRoleSystemModel;
import cn.model.TSystemModel;
import cn.model.VRoleSystemModel;

import java.util.List;


/**
 * 系统菜单管理业务类
 * @author sunst
 * @version 2019-6-22
 */
public interface SystemModelDAO {
    /**
     * 获取网站所有的菜单项列表
     * @return
     */
    public List<TSystemModel> getTSystemModelList();
    /**
     * 删除一个菜单
     * @param sysid 菜单id
     * @return 添加成功返回受影响的行数
     */
    public boolean deletesystemmole(int sysid);

    /**
     * 获取网站所有的菜单项列表
     * @return
     */
    public List<VRoleSystemModel> getAllTSystemModel(String wherecondition, int currentPage, int pageSize);

    /**
     * 获取网站所有的菜单数量
     * @return
     */
    public int getAllTSystemModelCount(String wherecondition);

    /**
     * 查询菜单表所有数据
     * @return
     */
    public List<TSystemModel> getAllTSystemModelByTab(String wherecondition, int currentPage, int pageSize);
    /**
     * 查询所有一级数据
     * @return
     */
    public List<TSystemModel> getAllTSystemModelone(String wherecondition, int currentPage, int pageSize);

    /**
     * 查询菜单表的菜单数量
     * @return
     */
    public int getAllTSystemModelCountByTab(String wherecondition);

    /**
     * 按照角色选择获取对应的菜单项列表
     * @param roleid
     * @return List<VRoleSystemModel>
     */
    public List<VRoleSystemModel> getSystemModelByRole(int roleid);

    /**
     * 授权部分，通过roleid查询当前角色拥有哪些菜单权限
     * @param roleid
     * @return List<VRoleSystemModel>
     */
    public List<VRoleSystemModel> getSystemModelByRoleid(int roleid, int currentPage, int pageSize);

    /**
     * 授权部分，通过roleid查询当前角色下菜单数量
     * @return
     */
    public int getSystemModelAmountByRoleid(int roleid);

    /**
     * 获取网站所有的一级菜单项列表
     * @return
     */
    public List<TSystemModel> getTSystemModelListByPage(int currentPage, int pageSize);

    /*
     * 添加一个一级菜单项列表
     * @param obj
     * @return int 返回添加的对象对应的key值
     */
    public int addSystemModel(TSystemModel SystemModel);

    /**
     * 获取网站所有的一级菜单项列表
     * @return
     */
    public List<TSystemModel> getTSystemModelListByOne();

    /**
     * 通过sysid查询一级菜单项列表
     * @param sysid
     * @return
     */
    public List<TSystemModel> getTSystemModelListOneBySysId(int sysid);

    /*
     * 修改一级菜单项列表
     * @param obj
     * @return int 返回添加的对象对应的key值
     */
    public boolean modifySystemModel(TSystemModel tSystemModel);

    /*
     * 查询二级菜单项列表
     * @param obj
     * @return TSystemModel
     */
    public TSystemModel getTSystemModelById(int id);
    /**
     * 获取网站指定1级菜单下的2级菜单项列表
     * @return
     */
    public List<TSystemModel> getTSystemModelListByPageTwo(int oldid,
                                                           int currentPage, int pageSize);
    /**
     * 获取网站指定1级菜单下的2级菜单项列表
     * @return
     */
    public List<TSystemModel> getTSystemModelListByOne(int oldid);

    /**
     * 判断二级菜单是否已有
     * @return
     */
    public boolean isTSystemModelListByid(int oldid);

    /**
     * 先查询角色菜单表是否已经有数据
     * @return
     */
    public List<TRoleSystemModel> getTSystemModelByTid(int id);

    /**
     * 查询档期啊角色当前菜单是否已经授予
     * @param roleid
     * @return List<VRoleSystemModel>
     */
    public List<VRoleSystemModel> getIsSysModelByRole(int sysid, int roleid);

    /*
     * 通过ID查询菜单
     * @param roleid
     * @return List<VRoleSystemModel>
     */
    public VRoleSystemModel getIsSysModelById(int id);

    /**
     * 添加角色菜单信息
     * @param obj
     * @return int 返回添加的对象对应的key值
     */
    public int addRoleSystemModel(TRoleSystemModel obj);

    /*
     * 修改角色菜单信息
     * @param obj
     * @return int 返回添加的对象对应的key值
     */
    public boolean modifyRoleSystemModel(TRoleSystemModel rolemodel);

    /**
     * 查询角色菜单表是否已经存在该数据
     * @return
     */
    public List<TRoleSystemModel> getTRoleSystemModelById(int roleid, int sysid);
}
